﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Data.SqlClient;

namespace QLSV
{
    public partial class ThongTinGiaoVien : Form
    {
        public ThongTinGiaoVien()
        {
            InitializeComponent();
        }

        private SqlConnection Con;
        private DataTable Dt = new DataTable("GiaoVien");
        private DataTable DtGV = new DataTable("GiaoVien");
        private SqlDataAdapter Da = new SqlDataAdapter();
        private Boolean Kt;

        private void Connect()
        {
            String Cn = "Data Source=LENOVOY510\\SQLEXPRESS;Initial Catalog=QLSV;Integrated Security=True";
            try
            {
                Con = new SqlConnection(Cn);
                Con.Open();
            }
            catch (Exception Ex)
            {
                MessageBox.Show("Không Thể Kết Nối Đến Cơ Sở Dữ Liệu!", "Lỗi!", MessageBoxButtons.OK, MessageBoxIcon.Error);

            }
        }

        private void DisConnect()
        {
            Con.Close();
            Con.Dispose();
            Con = null;
        }

        private void GetData()
        {
            SqlCommand Com = new SqlCommand();
            Com.Connection = Con;
            Com.CommandType = CommandType.Text;
            Com.CommandText = "Select * from GiaoVien";
            Da.SelectCommand = Com;
            Da.Fill(DtGV);

            Com.CommandType = CommandType.Text;
            Com.CommandText = @"Select MaGV as N'Mã Giáo Viên',
                                          Ho as N'Họ',
                                          Ten as N'Tên',
                                          GioiTinh as N'Giới Tính',
                                          NgaySinh as N'Ngày Sinh',
                                          (year(getdate())-year(NgaySinh)) as N'Tuổi',
	                                      DiaChi as N'Địa Chỉ',
                                          QueQuan as N'Quê Quán',
                                          SDT as N'Số Điện Thoại'                                      
                                          from GiaoVien";
            Da.SelectCommand = Com;
            Da.Fill(Dt);
            dgvttgv.DataSource = Dt;

            dgvttgv.ColumnHeadersDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
            dgvttgv.Columns[0].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
            dgvttgv.Columns[2].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
            dgvttgv.Columns[3].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
            dgvttgv.Columns[4].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
            dgvttgv.Columns[5].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
            dgvttgv.Columns[6].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
            dgvttgv.Columns[7].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
            dgvttgv.Columns[8].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight;
        }

        private void ThongTinGiaoVien_Load(object sender, EventArgs e)
        {
            Connect();
            GetData();
            Binding();
        }

        private void Binding()
        {
            txtmgv.DataBindings.Clear();
            txtmgv.DataBindings.Add("Text", dgvttgv.DataSource, "Mã Giáo Viên");
            txth.DataBindings.Clear();
            txth.DataBindings.Add("Text", dgvttgv.DataSource, "Họ");
            txtt.DataBindings.Clear();
            txtt.DataBindings.Add("Text", dgvttgv.DataSource, "Tên");
            cbgt.DataBindings.Clear();
            cbgt.DataBindings.Add("Text", dgvttgv.DataSource, "Giới Tính");
            dtpns.DataBindings.Clear();
            dtpns.DataBindings.Add("Text", dgvttgv.DataSource, "Ngày Sinh");
            txtdc.DataBindings.Clear();
            txtdc.DataBindings.Add("Text", dgvttgv.DataSource, "Địa Chỉ");
            txtqq.DataBindings.Clear();
            txtqq.DataBindings.Add("Text", dgvttgv.DataSource, "Quê Quán");
            txtsdt.DataBindings.Clear();
            txtsdt.DataBindings.Add("Text", dgvttgv.DataSource, "Số Điện Thoại");
        }

        private void clickthoat_Click(object sender, EventArgs e)
        {
            if (MessageBox.Show("Bạn Có Muốn Thoát Không?", "Thoát!", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
            {
                Close();
                Dispose();
            }
        }

        private void clickhuy_Click(object sender, EventArgs e)
        {
            txth.Text = "";
            txtt.Text = "";
            cbgt.Text = "";
            dtpns.Text = "";
            txtdc.Text = "";
            txtsdt.Text = "";
            txtqq.Text = "";
        }

        private void clickxoa_Click(object sender, EventArgs e)
        {
            if (txtmgv.Text.Length > 0)
            {
                SqlCommand Com = new SqlCommand();
                Com.Connection = Con;
                Com.CommandType = CommandType.StoredProcedure;
                Com.CommandText = "XoaGV";
                Com.Parameters.Add("@MaGV", SqlDbType.NChar, 10).Value = txtmgv.Text;
                SqlDataReader Dr = Com.ExecuteReader();
                Dt.Load(Dr);

                MessageBox.Show("Bạn Đã Xóa Thành Công!!!", "Thông Báo!!!", MessageBoxButtons.OK);

                Close();
                Dispose();
                DisConnect();
                ThongTinGiaoVien TTGV = new ThongTinGiaoVien();
                TTGV.Show();
            }
        }

        private bool KiemTra()
        {
            Kt = true;

            if (txth.Text == "")
            {
                MessageBox.Show("Bạn Chưa Nhập Họ!", "Thông Báo!", MessageBoxButtons.OK);
                Kt = false;
            }
            else if (txtt.Text == "")
            {
                MessageBox.Show("Bạn Chưa Nhập Tên!", "Thông Báo!", MessageBoxButtons.OK);
                Kt = false;
            }
            else if (dtpns.Value == null)
            {
                MessageBox.Show("Bạn Chưa Nhập Ngày Sinh!", "Thông Báo!", MessageBoxButtons.OK);
                Kt = false;
            }

            return Kt;
        }

        private void clicksua_Click(object sender, EventArgs e)
        {
            if (txtmgv.Text.Length > 0)
            {
                KiemTra();
                if (Kt == true)
                {
                    DataRow DtR = Dt.Select("[Mã Giáo Viên] = " + (txtmgv.Text))[0];
                    DtR.BeginEdit();
                    DtR["Họ"] = txth.Text;
                    DtR["Tên"] = txtt.Text;
                    if (cbgt.Text == "Nam")
                        DtR["Giới Tính"] = "Nam";
                    else if (cbgt.Text == "Nữ")
                        DtR["Giới Tính"] = "Nữ";
                    DtR["Ngày Sinh"] = dtpns.Value;
                    DtR["Địa Chỉ"] = txtdc.Text;
                    DtR["Quê Quán"] = txtqq.Text;
                    DtR["Số Điện Thoại"] = txtsdt.Text;
                    DtR.EndEdit();
                    SqlCommand ComUpdate = new SqlCommand();
                    ComUpdate.Connection = Con;
                    ComUpdate.CommandType = CommandType.Text;
                    ComUpdate.CommandText = @"Update GiaoVien set Ho = @Ho,
                                                                 Ten = @Ten,
                                                                 GioiTinh = @GioiTinh,
                                                                 NgaySinh = @NgaySinh,
                                                                 DiaChi = @DiaChi,
                                                                 QueQuan = @QueQuan,   
                                                                 SDT = @SDT                                                                                                             
                                                                 where MaGV = @MaGV";
                    ComUpdate.Parameters.Add("@MaGV", SqlDbType.NChar, 10, "Mã Giáo Viên");
                    ComUpdate.Parameters.Add("@Ho", SqlDbType.NVarChar, 30, "Họ");
                    ComUpdate.Parameters.Add("@Ten", SqlDbType.NVarChar, 10, "Tên");
                    ComUpdate.Parameters.Add("@GioiTinh", SqlDbType.NChar, 10, "Giới Tính");
                    ComUpdate.Parameters.Add("@NgaySinh", SqlDbType.Date, 50, "Ngày Sinh");
                    ComUpdate.Parameters.Add("@DiaChi", SqlDbType.NVarChar, 50, "Địa Chỉ");
                    ComUpdate.Parameters.Add("@QueQuan", SqlDbType.NVarChar, 30, "Quê Quán");
                    ComUpdate.Parameters.Add("@SDT", SqlDbType.NChar, 20, "Số Điện Thoại");
                    Da.UpdateCommand = ComUpdate;
                    Da.Update(Dt);

                    MessageBox.Show("Bạn Đã Sửa Thành Công!", "Thông Báo!", MessageBoxButtons.OK);
                    Close();
                    Dispose();
                    ThongTinGiaoVien TTGV = new ThongTinGiaoVien();
                    TTGV.Show();
                }
            }

            else
            {
                MessageBox.Show("Không Thể Thực Hiện!", "Thông Báo!", MessageBoxButtons.OK);
            }
        }

        private void clickthem_Click(object sender, EventArgs e)
        {
            Close();
            Dispose();
            DisConnect();
            ThemGiaoVien TGV = new ThemGiaoVien();
            TGV.Show();
        }
    }
}
